home *** CD-ROM | disk | FTP | other *** search
- /* $Revision Header *** Header built automatically - do not edit! ***********
- *
- * (C) Copyright 1991 by Torsten Jürgeleit
- *
- * Name .....: language_test.c
- * Created ..: Thursday 19-Dec-91 20:21:13
- * Revision .: 1
- *
- * Date Author Comment
- * ========= ==================== ====================
- * 11-Jul-92 Torsten Jürgeleit now get pointer to console device
- * 19-Dec-91 Torsten Jürgeleit Created this file!
- *
- ****************************************************************************
- *
- * Test of language support functions
- *
- * $Revision Header ********************************************************/
-
- /* Includes */
-
- #include <exec/types.h>
- #include <graphics/gfxbase.h>
- #include <intuition/intuitionbase.h>
- #include <intuition/intuition.h>
- #ifdef AZTEC_C
- #include <functions.h> /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
- #endif
- #include <libraries/memwatch.h> /* header file for memory debug link library (Fish 240) - AFTER functions.h */
- #include "/render/render.h"
- #include "/texts/texts.h"
- #include "/borders/borders.h"
- #include "/gadgets/gadgets.h"
- #include "/requester/requester.h"
- #include "language.h"
-
- /* Defines */
-
- #define WINDOW_WIDTH 600
- #define WINDOW_HEIGHT 180
- #define WINDOW_IDCMP (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL)
- #define WINDOW_FLAGS (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
- #define WINDOW_TITLE (UBYTE *)" Language test "
-
- #define RENDER_INFO_FLAGS (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
- #define OPEN_WINDOW_FLAGS (USHORT)(OPEN_WINDOW_FLAG_CENTER_SCREEN | OPEN_WINDOW_FLAG_RENDER_PENS)
-
- /* Defines for language texts */
-
- #define LANGUAGE_ENGLISH 0
- #define LANGUAGE_GERMAN 1
-
- #define LANGUAGE_TEXT_FILE "deutsch.language"
- #define LANGUAGE_TEXT_ENTRIES 14
-
- #define LANGUAGE_TEXT_AUTO_REQUEST (BYTE *)1
- #define LANGUAGE_TEXT_REQUESTER (BYTE *)2
- #define LANGUAGE_TEXT_LANGUAGE (BYTE *)3
- #define LANGUAGE_TEXT_ENGLISH (BYTE *)4
- #define LANGUAGE_TEXT_GERMAN (BYTE *)5
- #define LANGUAGE_TEXT_AUTO_REQ_TITLE (BYTE *)6
- #define LANGUAGE_TEXT_AUTO_REQ_BODY (BYTE *)7
- #define LANGUAGE_TEXT_AUTO_REQ_POS (BYTE *)8
- #define LANGUAGE_TEXT_AUTO_REQ_NEG (BYTE *)9
- #define LANGUAGE_TEXT_REQ_TITLE (BYTE *)10
- #define LANGUAGE_TEXT_REQ_LINE1 (BYTE *)11
- #define LANGUAGE_TEXT_REQ_LINE2 (BYTE *)12
- #define LANGUAGE_TEXT_REQ_LINE3 (BYTE *)13
- #define LANGUAGE_TEXT_REQ_GAD_CONTINUE (BYTE *)14
-
- /* Globals */
-
- struct IntuitionBase *IntuitionBase;
- struct GfxBase *GfxBase;
- struct Library *DiskfontBase;
- struct Library *LayersBase;
- struct Device *ConsoleDevice;
-
- /* Statics */
-
- STATIC struct NewWindow test_new_window = {
- 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_IDCMP, WINDOW_FLAGS,
- NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
- };
- STATIC struct TextAttr topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
- FS_NORMAL, FPF_ROMFONT },
- topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
- FS_NORMAL, FPF_ROMFONT };
- /* Defines for test gadgets */
-
- #define TEST1_GADGET_AUTO_REQUEST 0
- #define TEST1_GADGET_REQUESTER 1
- #define TEST1_GADGET_LANGUAGE 2
-
- #define TEST1_GADGET1_TYPE GADGET_DATA_TYPE_BUTTON
- #define TEST1_GADGET1_FLAGS GADGET_DATA_FLAG_HOTKEY
- #define TEST1_GADGET1_LEFT_EDGE ((WINDOW_WIDTH / 2 - TEST1_GADGET1_WIDTH) / 2)
- #define TEST1_GADGET1_TOP_EDGE ((WINDOW_HEIGHT - TEST1_GADGET1_HEIGHT) / 2)
- #define TEST1_GADGET1_WIDTH ((12 + 2) * 10)
- #define TEST1_GADGET1_HEIGHT 19
- #define TEST1_GADGET1_TEXT LANGUAGE_TEXT_AUTO_REQUEST
- #define TEST1_GADGET1_TEXT_ATTR &topaz60_attr
-
- #define TEST1_GADGET2_TYPE GADGET_DATA_TYPE_BUTTON
- #define TEST1_GADGET2_FLAGS GADGET_DATA_FLAG_HOTKEY
- #define TEST1_GADGET2_LEFT_EDGE (WINDOW_WIDTH - (TEST1_GADGET2_WIDTH + TEST1_GADGET1_LEFT_EDGE))
- #define TEST1_GADGET2_TOP_EDGE TEST1_GADGET1_TOP_EDGE
- #define TEST1_GADGET2_WIDTH TEST1_GADGET1_WIDTH
- #define TEST1_GADGET2_HEIGHT TEST1_GADGET1_HEIGHT
- #define TEST1_GADGET2_TEXT LANGUAGE_TEXT_REQUESTER
- #define TEST1_GADGET2_TEXT_ATTR TEST1_GADGET1_TEXT_ATTR
-
- #define TEST1_GADGET3_TYPE GADGET_DATA_TYPE_MX
- #define TEST1_GADGET3_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
- #define TEST1_GADGET3_LEFT_EDGE ((WINDOW_WIDTH - TEST1_GADGET3_WIDTH) / 2)
- #define TEST1_GADGET3_TOP_EDGE ((WINDOW_HEIGHT - TEST1_GADGET3_HEIGHT) / 2)
- #define TEST1_GADGET3_WIDTH 120
- #define TEST1_GADGET3_HEIGHT 30
- #define TEST1_GADGET3_TEXT LANGUAGE_TEXT_LANGUAGE
- #define TEST1_GADGET3_TEXT_ATTR &topaz60_attr
- #define TEST1_GADGET3_SPACING 2
- #define TEST1_GADGET3_ACTIVE 0
- #define TEST1_GADGET3_TEXT_ARRAY &language_array[0]
-
- STATIC BYTE *language_array[] = {
- LANGUAGE_TEXT_ENGLISH,
- LANGUAGE_TEXT_GERMAN,
- NULL
- };
- STATIC struct GadgetData test1_gadget_data[] = {
- {
- TEST1_GADGET1_TYPE, /* gd_Type */
- TEST1_GADGET1_FLAGS, /* gd_Flags */
- TEST1_GADGET1_LEFT_EDGE, /* gd_LeftEdge */
- TEST1_GADGET1_TOP_EDGE, /* gd_TopEdge */
- TEST1_GADGET1_WIDTH, /* gd_Width */
- TEST1_GADGET1_HEIGHT, /* gd_Height */
- TEST1_GADGET1_TEXT, /* *gd_Text */
- TEST1_GADGET1_TEXT_ATTR, /* *gd_TextAttr */
- { 0, 0, 0 }
- }, {
- TEST1_GADGET2_TYPE, /* gd_Type */
- TEST1_GADGET2_FLAGS, /* gd_Flags */
- TEST1_GADGET2_LEFT_EDGE, /* gd_LeftEdge */
- TEST1_GADGET2_TOP_EDGE, /* gd_TopEdge */
- TEST1_GADGET2_WIDTH, /* gd_Width */
- TEST1_GADGET2_HEIGHT, /* gd_Height */
- TEST1_GADGET2_TEXT, /* *gd_Text */
- TEST1_GADGET2_TEXT_ATTR, /* *gd_TextAttr */
- { 0, 0, 0 }
- }, {
- TEST1_GADGET3_TYPE, /* gd_Type */
- TEST1_GADGET3_FLAGS, /* gd_Flags */
- TEST1_GADGET3_LEFT_EDGE, /* gd_LeftEdge */
- TEST1_GADGET3_TOP_EDGE, /* gd_TopEdge */
- TEST1_GADGET3_WIDTH, /* gd_Width */
- TEST1_GADGET3_HEIGHT, /* gd_Height */
- TEST1_GADGET3_TEXT, /* *gd_Text */
- TEST1_GADGET3_TEXT_ATTR, /* *gd_TextAttr */
- {
- TEST1_GADGET3_SPACING, /* gd_MXSpacing */
- TEST1_GADGET3_ACTIVE, /* gd_MXActiveEntry */
- TEST1_GADGET3_TEXT_ARRAY /* gd_MXTextArray */
- }
- }, {
- INTUISUP_DATA_END /* mark end of border data array */
- }
- };
- /* Defines for auto request */
-
- #define TEST1_AUTO_REQ_TITLE LANGUAGE_TEXT_AUTO_REQ_TITLE
- #define TEST1_AUTO_REQ_BODY_TEXT LANGUAGE_TEXT_AUTO_REQ_BODY
- #define TEST1_AUTO_REQ_POS_TEXT LANGUAGE_TEXT_AUTO_REQ_POS
- #define TEST1_AUTO_REQ_NEG_TEXT LANGUAGE_TEXT_AUTO_REQ_NEG
- #define TEST1_AUTO_REQ_FLAGS (AUTO_REQ_FLAG_BACK_FILL | AUTO_REQ_FLAG_TEXT_CENTER | AUTO_REQ_FLAG_TEXT_COLOR2 | AUTO_REQ_FLAG_HOTKEY | AUTO_REQ_FLAG_CENTER_MOUSE | AUTO_REQ_FLAG_DRAW_RASTER)
-
- /* Defines for requester */
-
- #define TEST2_REQ_WIDTH 200
- #define TEST2_REQ_HEIGHT 100
- #define TEST2_REQ_FLAGS (REQ_DATA_FLAG_BACK_FILL | REQ_DATA_FLAG_CENTER_WINDOW | REQ_DATA_FLAG_INNER_WINDOW)
- #define TEST2_REQ_TITLE LANGUAGE_TEXT_REQ_TITLE
-
- #define TEST2_TEXT1_TYPE TEXT_DATA_TYPE_TEXT
- #define TEST2_TEXT1_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
- #define TEST2_TEXT1_LEFT_EDGE 0
- #define TEST2_TEXT1_TOP_EDGE 20
- #define TEST2_TEXT1_TEXT LANGUAGE_TEXT_REQ_LINE1
- #define TEST2_TEXT1_TEXT_ATTR &topaz60_attr
-
- #define TEST2_TEXT2_TYPE TEXT_DATA_TYPE_TEXT
- #define TEST2_TEXT2_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_ITALIC | TEXT_DATA_FLAG_COLOR2)
- #define TEST2_TEXT2_LEFT_EDGE 0
- #define TEST2_TEXT2_TOP_EDGE (TEST2_TEXT1_TOP_EDGE + 10)
- #define TEST2_TEXT2_TEXT LANGUAGE_TEXT_REQ_LINE2
- #define TEST2_TEXT2_TEXT_ATTR &topaz80_attr
-
- #define TEST2_TEXT3_TYPE TEXT_DATA_TYPE_TEXT
- #define TEST2_TEXT3_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_UNDERLINED)
- #define TEST2_TEXT3_LEFT_EDGE 0
- #define TEST2_TEXT3_TOP_EDGE (TEST2_TEXT2_TOP_EDGE + 10)
- #define TEST2_TEXT3_TEXT LANGUAGE_TEXT_REQ_LINE3
- #define TEST2_TEXT3_TEXT_ATTR &topaz80_attr
-
- #define TEST2_BORDER1_TYPE BORDER_DATA_TYPE_BOX2_OUT
- #define TEST2_BORDER1_LEFT_EDGE 20
- #define TEST2_BORDER1_TOP_EDGE 10
- #define TEST2_BORDER1_WIDTH (TEST2_REQ_WIDTH - 2 * TEST2_BORDER1_LEFT_EDGE)
- #define TEST2_BORDER1_HEIGHT (TEST2_REQ_HEIGHT - (3 * TEST2_BORDER1_TOP_EDGE + TEST2_GADGET1_HEIGHT))
-
- #define TEST2_GADGET_CONTINUE 0
-
- #define TEST2_GADGET1_TYPE GADGET_DATA_TYPE_BUTTON
- #define TEST2_GADGET1_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_MOVE_POINTER)
- #define TEST2_GADGET1_LEFT_EDGE ((TEST2_REQ_WIDTH - TEST2_GADGET1_WIDTH) / 2)
- #define TEST2_GADGET1_TOP_EDGE (TEST2_REQ_HEIGHT - (TEST2_GADGET1_HEIGHT + 10))
- #define TEST2_GADGET1_WIDTH ((8 + 2) * 10)
- #define TEST2_GADGET1_HEIGHT 19
- #define TEST2_GADGET1_TEXT LANGUAGE_TEXT_REQ_GAD_CONTINUE
- #define TEST2_GADGET1_TEXT_ATTR &topaz60_attr
-
- /* Statics for test borders */
-
- STATIC struct TextData test2_text_data[] = {
- {
- TEST2_TEXT1_TYPE, /* td_Type */
- TEST2_TEXT1_FLAGS, /* td_Flags */
- TEST2_TEXT1_LEFT_EDGE, /* td_LeftEdge */
- TEST2_TEXT1_TOP_EDGE, /* td_TopEdge */
- TEST2_TEXT1_TEXT, /* *td_Text */
- TEST2_TEXT1_TEXT_ATTR /* *td_TextAttr */
- }, {
- TEST2_TEXT2_TYPE, /* td_Type */
- TEST2_TEXT2_FLAGS, /* td_Flags */
- TEST2_TEXT2_LEFT_EDGE, /* td_LeftEdge */
- TEST2_TEXT2_TOP_EDGE, /* td_TopEdge */
- TEST2_TEXT2_TEXT, /* *td_Text */
- TEST2_TEXT2_TEXT_ATTR /* *td_TextAttr */
- }, {
- TEST2_TEXT3_TYPE, /* td_Type */
- TEST2_TEXT3_FLAGS, /* td_Flags */
- TEST2_TEXT3_LEFT_EDGE, /* td_LeftEdge */
- TEST2_TEXT3_TOP_EDGE, /* td_TopEdge */
- TEST2_TEXT3_TEXT, /* *td_Text */
- TEST2_TEXT3_TEXT_ATTR /* *td_TextAttr */
- }, {
- INTUISUP_DATA_END /* mark end of border data array */
- }
- };
- STATIC struct BorderData test2_border_data[] = {
- {
- TEST2_BORDER1_TYPE, /* bd_Type */
- TEST2_BORDER1_LEFT_EDGE, /* bd_LeftEdge */
- TEST2_BORDER1_TOP_EDGE, /* bd_TopEdge */
- TEST2_BORDER1_WIDTH, /* bd_Width */
- TEST2_BORDER1_HEIGHT /* bd_Height */
- }, {
- INTUISUP_DATA_END /* mark end of border data array */
- }
- };
- STATIC struct GadgetData test2_gadget_data[] = {
- {
- TEST2_GADGET1_TYPE, /* gd_Type */
- TEST2_GADGET1_FLAGS, /* gd_Flags */
- TEST2_GADGET1_LEFT_EDGE, /* gd_LeftEdge */
- TEST2_GADGET1_TOP_EDGE, /* gd_TopEdge */
- TEST2_GADGET1_WIDTH, /* gd_Width */
- TEST2_GADGET1_HEIGHT, /* gd_Height */
- TEST2_GADGET1_TEXT, /* *gd_Text */
- TEST2_GADGET1_TEXT_ATTR, /* *gd_TextAttr */
- { 0, 0, 0 }
- }, {
- INTUISUP_DATA_END /* mark end of border data array */
- }
- };
- STATIC struct RequesterData test2_requester_data = {
- 0, /* rd_LeftEdge */
- 0, /* rd_TopEdge */
- TEST2_REQ_WIDTH, /* rd_Width */
- TEST2_REQ_HEIGHT, /* rd_Height */
- TEST2_REQ_FLAGS, /* rd_Flags */
- TEST2_REQ_TITLE, /* *rd_Title */
- &test2_text_data[0], /* *rd_Texts */
- &test2_border_data[0], /* *rd_Borders */
- &test2_gadget_data[0] /* *rd_Gadgets */
- };
- STATIC BYTE *english_language_text_array[] = {
- (BYTE *)LANGUAGE_TEXT_ENTRIES,
-
- /* Texts for main display */
- "_Auto Request",
- "_Requester",
- "_Language",
- "English",
- "Deutsch",
-
- /* Texts for auto request */
- " Auto Request ",
- "Test line 1\\n\\nTest line 2\\nTest line 3\\n\\nTest line 4",
- "_Positive",
- "_Negative",
-
- /* Texts for requester */
- " Requester ",
- "Text Line 1",
- "Text Line 2",
- "Text Line 3",
- "_Continue"
- };
- /* Prototypes */
-
- VOID test_action(struct RenderInfo *ri, struct Window *win);
-
- /* Pragmas */
-
- #pragma regcall(test_action(a0,a1))
-
- /* Language test */
-
- LONG
- main(VOID)
- {
- struct IOStdReq io;
- struct RenderInfo *ri;
- struct Window *win;
-
- MWInit((BPTR)NULL, 0L);
- if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
- if (GfxBase = OpenLibrary("graphics.library", 0L)) {
- if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
- if (LayersBase = OpenLibrary("layers.library", 0L)) {
- if (!OpenDevice("console.device", -1L,
- (struct IORequest *)&io, 0L)) {
- ConsoleDevice = io.io_Device;
- if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
- if (win = open_window(ri, &test_new_window,
- OPEN_WINDOW_FLAGS)) {
- test_action(ri, win);
- close_window(win, FALSE);
- }
- free_render_info(ri);
- }
- CloseDevice((struct IORequest *)&io);
- }
- CloseLibrary(LayersBase);
- }
- CloseLibrary(DiskfontBase);
- }
- CloseLibrary(GfxBase);
- }
- CloseLibrary(IntuitionBase);
- }
- MWTerm();
- return(0L);
- }
- /* Perform IDCMP action */
-
- VOID
- test_action(struct RenderInfo *ri, struct Window *win)
- {
- USHORT language = LANGUAGE_ENGLISH;
- BOOL keepon3 = TRUE;
-
- do {
- struct GadgetList *gl;
- BYTE **language_text_array;
- USHORT new_language;
-
- /* Build language text array */
- switch (language) {
- case LANGUAGE_ENGLISH :
- language_text_array = &english_language_text_array[0];
- break;
-
- case LANGUAGE_GERMAN :
- language_text_array = build_language_text_array(LANGUAGE_TEXT_FILE,
- LANGUAGE_TEXT_ENTRIES);
- break;
- }
-
- /* Create and display gadgets */
- if (!language_text_array || !(gl = create_gadgets(ri,
- &test1_gadget_data[0], 0, 0, language_text_array))) {
- keepon3 = FALSE;
- } else {
- struct MsgPort *up = win->UserPort;
- BOOL keepon2 = TRUE;
-
- set_gadget_attributes(gl, TEST1_GADGET_LANGUAGE, 0L, 0L,
- USE_CURRENT_VALUE, (ULONG)language, (VOID *)USE_CURRENT_VALUE);
- clear_window(ri, win, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0);
- display_gadgets(win, gl);
- do {
- struct IntuiMessage *msg1, *msg2;
- struct RequesterList *rl;
-
- WaitPort(up);
- while (msg2 = get_msg(up)) {
- switch (msg2->Class) {
- case CLOSEWINDOW :
- keepon3 = FALSE;
- break;
-
- case ISUP_ID :
- switch (msg2->Code) {
- case TEST1_GADGET_AUTO_REQUEST :
- auto_request(win, TEST1_AUTO_REQ_TITLE,
- TEST1_AUTO_REQ_BODY_TEXT,
- TEST1_AUTO_REQ_POS_TEXT,
- TEST1_AUTO_REQ_NEG_TEXT, 0L, 0L,
- TEST1_AUTO_REQ_FLAGS, language_text_array);
- break;
-
- case TEST1_GADGET_REQUESTER :
- if (rl = display_requester(win,
- &test2_requester_data,
- language_text_array)) {
- BOOL keepon1 = TRUE;
-
- do {
- WaitPort(up);
- while (msg1 = get_msg(up)) {
- if (msg1->Class == ISUP_ID) {
- keepon1 = FALSE;
- }
- reply_msg(msg1);
- }
- } while (keepon1 == TRUE);
- remove_requester(rl);
- }
- break;
-
- case TEST1_GADGET_LANGUAGE :
- new_language = (USHORT)(LONG)msg2->IAddress;
- keepon2 = FALSE;
- break;
- }
- break;
- }
- reply_msg(msg2);
- }
- } while (keepon2 == TRUE && keepon3 == TRUE);
- remove_gadgets(gl);
- free_gadgets(gl);
- }
-
- /* Free language text array */
- if (language_text_array && language == LANGUAGE_GERMAN) {
- free_language_text_array(language_text_array);
- }
- language = new_language;
- } while (keepon3 == TRUE);
- }
-